﻿// Inner Fire 游戏引擎库
// ColliderWorld - 碰撞世界
//
// Copyright (c) 2025 by 尔西大帝. All rights reserved.
//
// 所属层级：应用层（4）
// 用于统计管理碰撞。这里面只涉及碰撞的触发，而不涉及物理的项目
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2025-07-24

#pragma once

#include <EASTL/vector.h>
#include <graphics/graphics_def.h>
#include <static_string.h>
#include <game/physics/collider.h>

namespace ifire::game {
class Scene;


class ColliderWorld {
public:
  ColliderWorld(Scene& scene, ikit::sstr name);
  ColliderWorld(const ColliderWorld& lhs) = delete;
  ColliderWorld& operator=(const ColliderWorld& lhs) = delete;
  ~ColliderWorld();

  // 更新项目
  void FixedUpdate(float delta_time);
  // 更新项目（Late）
  void LateUpdate(float delta_time);

  // 使用一个碰撞体对当前的世界的碰撞体进行碰撞
  void Collide(Collider* collider);

  // 将一个碰撞体加入到世界
  void Add(Collider* collider);


public:
  ikit::sstr name;

private:
  Scene& scene_;
  eastl::vector<Collider*> colliders_;
};

} // namespace ifire::game